/**
 * 任务tag对应定时器编号
 */
var taskToInterval = {

}
//处理url后面的参数变成对象形式
//方法问题  需要修改
// function  GetRequest(urlStr) {
// 	if(typeof urlStr == "undefined") {
// 		var url = decodeURI(location.search);
// 	}
// 	else {
// 		var url = "?" + urlStr.split("?")[1];
// 	}
// 	var theRequest = new Object();
// 	if(url.indexOf("?") != -1) {
// 		var str = url.substr(1);
// 		strs = str.split("&");
// 		for(var i = 0; i < strs.length; i++) {
// 			theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
// 		}
// 	}
// 	return theRequest
// }

/**
 * 创建一个任务
 * @param {Object} tag 唯一标识
 * @param {Object} timeOut 第一次执行的延时,单位秒
 * @param {Object} interval 执行间隔,单位毫秒
 * @param {Object} maxRun 最大执行次数,小于0就是无限
 * @param {Object} callback 回调
 */
function addNewTask(tag, timeOut, interval, maxRun, callback) {
	removeTask(tag)
	var errorCount = 0
	//延时去处理任务
	setTimeout(function() {
		//再检查一下是否有进行中任务
		removeTask(tag)
		//先执行一次
		try {
			callback()
		} catch(e) {
			console.error(e.stack)
			errorCount++
		}
		var count = 1
		var task = setInterval(function() {
			//对象不存在了
			if(taskToInterval == undefined || !taskToInterval.hasOwnProperty(tag)) {
				removeTask(tag)
				return
			}
			//判断是否执行次数已到
			if(maxRun >= 0 && count >= maxRun) {
				removeTask(tag)
				return
			}
			count += 1
			//执行任务
			try {
				callback()
			} catch(e) {
				console.error(e.stack)
				errorCount++
			}
			if(errorCount > 100){
				//异常次数过多，清除掉
				removeTask(tag)
			}
		}, interval)
		taskToInterval[tag] = task
	}, timeOut)
}
/**
 * 移除指定的任务
 * @param {Object} tag
 */
function removeTask(tag) {
	if(taskToInterval == undefined) {
		taskToInterval = {}
	}
	if(taskToInterval.hasOwnProperty(tag)) {
		clearInterval(taskToInterval[tag])
		delete taskToInterval[tag]
	}
}